您现在的位置是:首页 > 开发文档 > 正文

C/C++/JavaScript等编程语言中字符串转数字与其它类型转换函数详解

编辑:本站更新:2024-08-26 06:26:42人气:6128
在C、C++以及JavaScript等多种主流编程语言中,字符串和数值类型的相互转换是一项基础且重要的操作。这类功能通常涉及到各类内置或标准库提供的函数进行处理,在不同场景下具有不同的使用方式及注意事项。

### **一、 C 语言中的字符串转数字**

**1. atoi() 和 atol():**
在C语言中,atoi(Ascii to Integer)用于将包含整数的ASCII字符序列转化为int型值;atol则是将其转化成长整型(long int)值:

c

#include <stdlib.h>

char str[] = "42";
int num_int = atoi(str); // 转换为int类型
long num_long = atol(str); // 转换为long类型


然而需要注意的是,这两个函数无法检查溢出,并会忽略开头无效的空白符直至找到第一个有效数字为止。

**2. strtol(), strtoll(),strtoul(), strtoull():**
这些更为强大的函数不仅能识别正负号,还可以指定结束标志并返回未解析的部分:

c

#include <stdio.h>
#include <stdlib.h>

char input[50] = "-123abc";
char *endptr;
long val;

val = strtol(input, &endptr, 10);
printf("The converted value is %ld\n", val);
// 输出:-123,endptr指向"abc"

这里的基数参数默认是10表示十进制,也可以设置成其他如二进制(2),八进制(8)或者十六进制(16)来解释输入串。

### **二、 C++ 中的字符串转数字**

**1 stoi/stol/stoul/stoll/stoull:**
自C++11起引入了更安全易用的新系列函数:

cpp

std::string s="123";
int i=stoi(s);
unsigned u=stoul(s);

s="-9876543210";
long l=stol(s);
long long ll=stoll(s);

u=stoul("-1"); // 抛出 std::invalid_argument 异常,因为不能将负数赋给无符号变量。

相较于传统的C风格函数,上述新方法会在遇到非法格式时抛出异常而不是静默失败。

**2 stringstream 类:**
另外一种灵活的方式就是通过stringstream类实现任意数据类型间的互相转换:

cpp

#include<iostream>
#include<sstream>

std::string strNum = "123";
std::istringstream iss (strNum );
int myInt;

iss >> myInt ;
if (!iss)
{
// 处理错误情况 - 字符串未能完全成功地被解读为一个整数.
}
else
{
// 成功执行转换,myInt 现已存储字符串对应的整数值
}



### **三、 JavaScript 中的字符串转数字**

在JavaScript里,由于其动态弱类型特性,不同类型之间的转换相对简单直接。

**Number() 函数 或 + 运算符 :**
这两种机制都可以用来把String对象转换为其代表的Numeric值:

javascript

let string_num = '42';
let number_val = Number(string_num); // 使用构造函数转换

console.log(number_val === +'42'); // true,+运算符同样可以完成此转换

如果试图转换非数字形式的字符串,则结果将是NaN(Not-a-Number)。例如,“Hello”经过`Number()`后变为NaN。

总结来说,无论是在C/C++还是JavaScript之中,从字符串到各种数字类型的转换均提供了丰富的工具集以满足开发者的实际需求,但在具体应用过程中务必注意边界条件与可能引发的问题,确保程序运行稳定可靠。同时随着各语言版本迭代更新,不断有更加便捷高效的API涌现出来提升开发者体验,值得我们持续关注学习实践。
关注公众号

www.php580.com PHP工作室 - 全面的PHP教程、实例、框架与实战资源

PHP学习网是专注于PHP技术学习的一站式在线平台,提供丰富全面的PHP教程、深入浅出的实例解析、主流PHP框架详解及实战应用,并涵盖PHP面试指南、最新资讯和活跃的PHP开发者社区。无论您是初学者还是进阶者,这里都有助于提升您的PHP编程技能。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

最新推荐

本月推荐